package pro.cherish.knowledgesqltool.core.common;

/**
 * @author 创建人：cherish
 * @version 版本号：V1.0
 * <p>
 * ***************************修订记录************************************
 * 2019-08-31 cherish 创建该类功能。
 * **********************************************************************
 * </p>
 * @ClassName 类名：CommonConfig
 * @Description 功能说明：
 * <p>
 * TODO
 * </p>
 * **********************************************************************
 * @date 创建日期： 2019-08-31 cherish
 */
public class CommonConfig {
    // 匹配所有的标签参数
    public static final String allParamLabelParanStr = "#\\{.*?}";
    // 分页参数
    public static final String[] pageParam = {"pageNo", "pageSize"};
    // 匹配某个参数的标签参数
    public static final String paramLabelParanStr = "#\\{[^{]*" + "%s" + "[^{]*\\}";
    // 匹配某个参数的标签参数【携带params.】
    public static final String paramLabelParanStr2 = "#\\{[^{]*" + "params.%s" + "[^{]*\\}";

    // 用于匹配( 1 = 0  or 1 = 0 )的问题
    public static final String orProblemPartenStr="\\(( 1 = 0 )+\\)";

    /**
     * @Description: 获取sql配置参数模板解析正则
     * @Param: []
     * @return: java.lang.String
     * @Author: cherish
     * @Date: 2019/8/31
     */
    public static String getAllParamLabelParanStr() {
        return allParamLabelParanStr;
    }

    /**
     * @Description: 分页参数
     * @Param: []
     * @return: java.lang.String[]
     * @Author: cherish
     * @Date: 2019/8/31
     */
    public static String[] getPageParam() {
        return pageParam;
    }
    /**
    * @Description: 指定参数的标签匹配
    * @Param: [key]
    * @return: java.lang.String
    * @Author: cherish
    * @Date: 2019/8/31
    */
    public static String getParamLabelParanStr(String key) {
        return String.format(paramLabelParanStr, key);
    }

    /**
     * @Description: 指定参数的标签匹配【左右加单引号】
     * @Param: [key]
     * @return: java.lang.String
     * @Author: cherish
     * @Date: 2019/8/31
     */
    public static String getParamLabelParanStr2(String key) {
        return String.format("'"+paramLabelParanStr+"'", key);
    }

    /**
     * @Description: 指定参数的标签匹配【参数标签携带params.】
     * @Param: [key]
     * @return: java.lang.String
     * @Author: cherish
     * @Date: 2019/8/31
     */
    public static String getParamLabelParanStr3(String key) {
        return String.format(paramLabelParanStr2, key);
    }


    public static String getOrProblemPartenStr(){
        return orProblemPartenStr;
    }
}
